module array_copy(); 

initial begin
    // static array copy
    begin
        int s_src_arr[5] = '{1, 2, 3, 4, 5};
        int s_dst_arr[5];
        s_dst_arr = s_src_arr;
        s_dst_arr[0] = 10;
        $display("s_dst_arr: %p", s_dst_arr);
        $display("s_src_arr: %p", s_src_arr);
    end

    // dynamic array copy
    begin
        int d_src_arr[] = '{1, 2, 3, 4, 5};
        int d_dst_arr[];
        d_dst_arr = d_src_arr;
        d_dst_arr[0] = 10;
        $display("d_dst_arr: %p", d_dst_arr);
        $display("d_src_arr: %p", d_src_arr);
    end

    // queue copy
    begin
        int q_src_arr[$] = '{1, 2, 3, 4, 5};
        int q_dst_arr[$];
        q_dst_arr = q_src_arr;
        q_dst_arr[0] = 10;
        $display("q_dst_arr: %p", q_dst_arr);
        $display("q_src_arr: %p", q_src_arr);
    end

    // associative array copy
    begin
        int a_src_arr[string] = '{"a": 1, "b": 2, "c": 3};
        int a_dst_arr[string];
        a_dst_arr = a_src_arr;
        a_dst_arr["a"] = 10;
        $display("a_dst_arr: %p", a_dst_arr);
        $display("a_src_arr: %p", a_src_arr);
    end
end
endmodule
